Associations (hasMany, belongsTo) ব্যবহার করা

Web Development - এক্সটিজেএস (ExtJS) - ExtJS Models এবং Data Binding |

ExtJS এ Associations ডেটাবেসের সম্পর্ক বা রিলেশনশিপের মত কাজ করে, যা ডেটা মডেলগুলির মধ্যে সম্পর্ক তৈরি এবং পরিচালনা করতে সহায়ক। ExtJS এর মডেল সিস্টেম hasMany এবং belongsTo অ্যাসোসিয়েশন সমর্থন করে, যা একাধিক মডেলের মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়। এই অ্যাসোসিয়েশনগুলি ডেটা মডেলের মধ্যে একে অপরের সাথে সম্পর্ক স্থাপন এবং সহজভাবে ডেটা পরিচালনা করার জন্য অত্যন্ত গুরুত্বপূর্ণ।

১. hasMany অ্যাসোসিয়েশন

hasMany অ্যাসোসিয়েশনটি ব্যবহার করা হয় যখন একটি মডেল অন্য মডেলের একাধিক রেকর্ডের মালিক। উদাহরণস্বরূপ, একটি Customer মডেল একাধিক Order মডেলের মালিক হতে পারে।

hasMany ব্যবহার উদাহরণ

ধরা যাক, একটি Customer মডেল এবং একটি Order মডেল রয়েছে। একটি Customer এর একাধিক Order থাকতে পারে। তাই, Customer মডেলটি Order মডেলের hasMany অ্যাসোসিয়েশন থাকবে।

Customer.js (মডেল):

Ext.define('MyApp.model.Customer', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'email'],

    hasMany: {
        model: 'MyApp.model.Order', // সম্পর্কযুক্ত মডেল
        name: 'orders',              // অ্যাসোসিয়েশন নাম
        foreignKey: 'customer_id'    // আউটগোয়িং সম্পর্কের কী
    }
});

Order.js (মডেল):

Ext.define('MyApp.model.Order', {
    extend: 'Ext.data.Model',
    fields: ['id', 'orderDate', 'totalAmount', 'customer_id'],

    belongsTo: {
        model: 'MyApp.model.Customer', // সম্পর্কযুক্ত মডেল
        foreignKey: 'customer_id',     // ইনকামিং সম্পর্কের কী
        getterName: 'getCustomer'      // মডেল রিলেটেড ডেটা পাওয়ার জন্য গেটার ফাংশন
    }
});

এখানে, Customer মডেল hasMany অ্যাসোসিয়েশন ব্যবহার করে Order মডেলের একাধিক রেকর্ডের মালিক। অন্যদিকে, Order মডেল belongsTo অ্যাসোসিয়েশন ব্যবহার করে Customer মডেলের সাথে সম্পর্ক স্থাপন করছে।

২. belongsTo অ্যাসোসিয়েশন

belongsTo অ্যাসোসিয়েশনটি ব্যবহার করা হয় যখন একটি মডেল অন্য একটি মডেলের একক রেকর্ডের সাথে সম্পর্কিত হয়। উদাহরণস্বরূপ, একটি Order মডেল একটি নির্দিষ্ট Customer এর সাথে সম্পর্কিত।

Order.js (মডেল):

Ext.define('MyApp.model.Order', {
    extend: 'Ext.data.Model',
    fields: ['id', 'orderDate', 'totalAmount', 'customer_id'],

    belongsTo: {
        model: 'MyApp.model.Customer', // সম্পর্কযুক্ত মডেল
        foreignKey: 'customer_id',     // ইনকামিং সম্পর্কের কী
        getterName: 'getCustomer'      // মডেল রিলেটেড ডেটা পাওয়ার জন্য গেটার ফাংশন
    }
});

এখানে, Order মডেলটি belongsTo অ্যাসোসিয়েশন ব্যবহার করে Customer মডেলের সাথে সম্পর্কিত। এর মাধ্যমে একটি অর্ডারের সাথে সম্পর্কিত গ্রাহকের তথ্য সহজে পাওয়া যাবে।


অ্যাসোসিয়েশন ডেটা লোড করা

আপনি যখন hasMany বা belongsTo অ্যাসোসিয়েশন ব্যবহার করেন, তখন মডেলের সাথে সম্পর্কিত ডেটা লোড করার জন্য আপনি association বা proxy ব্যবহার করতে পারেন।

hasMany অ্যাসোসিয়েশন লোড করার উদাহরণ:

var customer = Ext.create('MyApp.model.Customer', {
    id: 1,
    name: 'John Doe',
    email: 'john.doe@example.com'
});

// অ্যাসোসিয়েশন ডেটা লোড করতে
customer.getOrders().load({
    callback: function(orders, operation, success) {
        if (success) {
            console.log(orders); // গ্রাহকের অর্ডারের তালিকা
        }
    }
});

এখানে, getOrders() হল hasMany অ্যাসোসিয়েশন দ্বারা সম্পর্কিত Order মডেলগুলির তালিকা ফেরত দেয়।

belongsTo অ্যাসোসিয়েশন লোড করার উদাহরণ:

var order = Ext.create('MyApp.model.Order', {
    id: 1,
    orderDate: '2024-12-01',
    totalAmount: 250,
    customer_id: 1
});

// অ্যাসোসিয়েশন ডেটা লোড করতে
order.getCustomer().load({
    callback: function(customer, operation, success) {
        if (success) {
            console.log(customer); // অর্ডারের সাথে সম্পর্কিত গ্রাহকের তথ্য
        }
    }
});

এখানে, getCustomer() হল belongsTo অ্যাসোসিয়েশন দ্বারা সম্পর্কিত Customer মডেলের রেকর্ড।


সারাংশ

  1. hasMany অ্যাসোসিয়েশন: একটি মডেল (যেমন Customer) একাধিক মডেল (যেমন Order) এর মালিক হতে পারে। একাধিক সম্পর্কের ডেটা লোড করা সম্ভব।
  2. belongsTo অ্যাসোসিয়েশন: একটি মডেল (যেমন Order) অন্য একটি মডেল (যেমন Customer) এর সাথে সম্পর্কিত। একক সম্পর্কের ডেটা লোড করা সম্ভব।
  3. ডেটা লোডিং: অ্যাসোসিয়েশন ব্যবহারের মাধ্যমে সম্পর্কিত মডেলের ডেটা লোড এবং একে অপরের সাথে সম্পর্কিত তথ্য পাওয়া যায়।

ExtJS এর associations (hasMany, belongsTo) ব্যবহার করে আপনি সহজেই ডেটার সম্পর্ক স্থাপন এবং পরিচালনা করতে পারেন, যা বৃহত্তর অ্যাপ্লিকেশন গঠনে সাহায্য করে।

Content added By
Promotion